package com.example.kotlindemo.ui

import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.example.internaltest.PublicDecorateUser
import com.example.kotlindemo.R
import com.example.kotlindemo.specialclass.IUser
import com.example.kotlindemo.specialclass.UserImpl


//: 表示继承，同样也可以表示实现接口
//: Kotlin 里面的类默认是final的，而Java里只有加上final关键字的类才是final
class MainActivity : AppCompatActivity() {

    var str :String = "Kotlin 无参数无返回值 函数定义"
    var strFirst ="一"

    lateinit var tvTest: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        noNameTestFun()
        tvTest = findViewById(R.id.tv_test)
        tvTest.setOnClickListener(object : View.OnClickListener{
            override fun onClick(p0: View?) {
                interalMoudleTest()
            }
        })
    }



    fun abc(){
        println("$str$strFirst")
    }
    fun abc2() : Unit {
        println("$str"+"二")
    }



    fun noNameTestFun(){
        var user = UserImpl()
       user.printName(object: IUser{
           override fun getName(): String {
               return "匿名 牛逼  接口{}"
           }
       })
    }



    fun interalMoudleTest(){
        //internal 修饰，跨越module 访问不到
//        var userInternal = InternalDecorateUser()
        // UserImpl默认是public，全局都可以访问到

        //引入module library ，就可以导入包了
        var userPublic = PublicDecorateUser()
        Log.e("long", userPublic.str)
    }

}
